package com.dji.custom.service;

import com.dji.sample.component.redis.RedisConst;
import com.dji.sample.component.redis.RedisOpsUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.Objects;


/**
 * @author sean
 * @version 0.2
 * @date 2021/12/9
 */
@Service
@Slf4j
public class JobCustomService  {

    public String getTmpJobId(String deviceSn) {

        String jobId = "";
        try {
            // 最近的一次任务id(保存在数据库里的最新jobId)
            Object jobIdLast = RedisOpsUtils.get(RedisConst.DEVICE_LAST_JOB_KEY + deviceSn);

            // 在线jobId
            Object jobIdObj = RedisOpsUtils.get(RedisConst.DEVICE_ONLINE_KEY + deviceSn);

            // 无人机不在线并且有上次任务 则采用上次任务id
            if (Objects.isNull(jobIdObj) && !Objects.isNull(jobIdLast)) {
                jobId = (String) jobIdLast;
            } else if (!Objects.isNull(jobIdObj) &&Objects.isNull(jobIdLast)) {
                // 无人机在线并且 没有上次任务 则采用在线任务id
                jobId = String.valueOf(jobIdObj);
            } else if (!Objects.isNull(jobIdObj) && !Objects.isNull(jobIdLast)) {
                // 无人机在线并且 有上次任务
                if (jobIdLast.equals(String.valueOf(jobIdObj))) {
                    // 在线id 和 上次任务id一致 则选用 在线id
                    jobId = String.valueOf(jobIdObj);
                }
                if (!jobIdLast.equals(String.valueOf(jobIdObj))) {
                    // 在线id 和 上次任务id 不一致 则选用 上次任务id
                    jobId = (String) jobIdLast;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            log.error("获取临时任务jobid失败 ",e.getMessage());
        }
        return jobId;
    }

}
